'''基础层：实现元素的定位和操作'''
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep
import logging
logging.basicConfig(level=logging.INFO,filename='asset.log',format='%(asctime)s %(levelname)s %(name)s %(message)s')
class BasePage:
    base_url=r'http://172.16.22.111:8080'
    # url = r'/bsams/front/login.do'
    def __init__(self,dr):
        self.dr = dr
    def _open(self,url):
        '''实现打开url'''
        full_url=self.base_url+url
        self.dr.get(full_url)
        self.dr.maximize_window()
    def open(self):
        self._open(self.url)

    def find_ele(self, loc):
        '''实现元素定位'''
        ele=self.dr.find_element(*loc)
        return ele
        logging.info(f'定位{loc}成功')
    def input_ele(self, loc, value):
        '''实现元素输入'''
        ele = self.find_ele(loc)
        ele.send_keys(value)
        logging.info(f'在{loc}输入{value}成功')
    def ele_click(self, loc):
        '''实现按钮点击'''
        ele=self.find_ele(loc)
        ele.click()
        logging.info(f'在{loc}点击成功')
    def ele_clear(self, loc):
        '''实现：清除输入框'''
        ele=self.find_ele(loc)
        ele.clear()
        logging.info(f'{loc}内容清除成功')
    def ele_select(self,loc,value):
        ele = self.find_ele(loc)
        Select(ele).select_by_visible_text(value)
        logging.info(f'定位{loc}成功，选择{value}成功')
    def get_alert_text(self):
        text=self.dr.switch_to.alert.text
        return text
    def alert_click(self):
        self.dr.switch_to.alert.accept()

if __name__ == '__main__':
    id_loc = (By.ID,'taskId')
    username_loc = (By.ID, 'loginName')
    pwd_loc = (By.ID, 'password')
    identify_loc = (By.ID, 'vericode')
    login_btn_loc = (By.XPATH, '//*[@id="fmedit"]/div[2]/div[6]/input')
    id = 1
    username = 'test11'
    pwd = '1234567'
    identify = 'shtd'
    url = r'/bsams/front/login.do'
    chrome_location = r'D:\chrom browser\chrome-win\chrome.exe'
    options = webdriver.ChromeOptions()
    options.binary_location = chrome_location
    dr = webdriver.Chrome(options=options)
    basepage = BasePage(dr)
    # basepage._open(url)

    basepage.open()
    basepage.input_ele(id_loc, id)
    basepage.input_ele(username_loc, username)
    basepage.input_ele(pwd_loc, pwd)
    basepage.input_ele(identify_loc, identify)
    basepage.ele_click(login_btn_loc)
    sleep(5)

    dr.quit()
